iT邦幫忙

0

[Java] finalize Method

  • 分享至 

  • xImage
  •  

閱讀時間: 1分鐘

名字跟final, finally 關鍵字很相似,但本質就有很大的分別。
finalize 只是Method,屬於java.lang.Object類別。

finalize() method 一般會被叫做終結者。
終結者會被觸發當JVM 計算出要執行garbage collection的時候. 而終結者會執行任何操作。

finalize() method 的主要作用是把物件的資源在被刪除(garbage collection)之前釋放出來或者進行結尾的動作。
public class Finalizable {
    private BufferedReader reader;
 
    public Finalizable() {
        InputStream input = this.getClass()
          .getClassLoader()
          .getResourceAsStream("file.txt");
        this.reader = new BufferedReader(new InputStreamReader(input));
    }
 
    public String readFirstLine() throws IOException {
        String firstLine = reader.readLine();
        return firstLine;
    }
 
    // other class members
}

大家會留意到物件reader是仍然沒有close,所以可以透過finalize()來執行close這個動作。

@Override
public void finalize() {
    try {
        reader.close();
        System.out.println("Closed BufferedReader in the finalizer");
    } catch (IOException e) {
        // ...
    }
}

運用了finalize() {就可以完全保證reader這個資源能在整個程式進入garbage collection之前釋放出來。


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言